perm filename BLIROB.AX[W78,JMC] blob
sn#333103 filedate 1978-02-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 declare INDCONST S0 ε situation
C00005 ENDMK
C⊗;
declare INDCONST S0 ε situation;
declare INDCONST Robot Outside Table Box1 Box2 Door ε tower;
declare PREDCONST key(tower) [pre];
declare PREDCONST red(tower)[pre];
declare PREDCONST theseblocks(tower);
extension theseblocks {Box1 Box2 Door Outside Robot Table};
axiom movable:
∀t1 t2 s.(movable(t1,t2,s) ≡
(t1 = Robot ∧ (t2 = Box1 ∨ t2 = Box2 ∨ t2 = Door ∨ t2 = Table ∨ t2 = Outside)
∧ (¬(t2 = Outside) ∨ ∃t.(key t ∧ on(t,Door,s))))
∨ (t2 = Robot ∧ ∀t4.¬on(t4,Robot,s) ∧
∃t3.(on(Robot,t3,s) ∧ on(t1,t3,s)))
∨ (on(t1,Robot,s) ∧ on(Robot,t2,s)))
;;
axiom initial:
∃t1 t2.(key t1 ∧ (t2 = Box1 ∨ t2 = Box2) ∧ on(t1,t2,S0)
∧ ∀t3.(on(t3,t2,S0) ⊃ key t3 ∨ t3 = Robot))
∃t1.(red t1 ∧ on(t1,Door,S0))
∀t1.(on(t1,Door,S0) ⊃ red t1 ∨ t1 = Robot)
∀t.(on(t,Table,S0) ⊃ t = Robot)
∀t1 t2.(on(t1,Robot,S0) ∧ on(t2,Robot,S0) ⊃ t1 = t2)
¬on(Robot,Outside,S0)
;;
declare OPCONST pickup(situation) = situation [pre];
axiom pickup:
∀t s.(on(Robot,t,s) ∧ ∀t1.(on(t1,t,s) ⊃ t = Robot) ⊃ pickup s = s)
∀t s.(on(Robot,t,s) ∧ ∃t1.(on(t1,t,s) ∧ ¬(t1 = Robot))
⊃ ∃t1.(¬(t1 = Robot) ∧ pickup s = move(t1,Robot,s)))
;;
declare OPCONST drop(situation) = situation [pre];
axiom drop:
∀t s.(∀t1.¬on(t1,Robot,s) ⊃ drop s = s)
∀t s t1.(on(Robot,t,s) ∧ on(t1,Robot,s) ⊃ drop s = move(t1,t,s))
;;
declare OPCONST go(tower, situation) = situation;
axiom go:
∀t s.(go(t,s) = move(Robot,t,s))
;;